package com.jxd.petMgr.dao;

import com.jxd.petMgr.model.Pet;
import com.jxd.petMgr.util.PageUtil;


import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;

/**
 * @author lzh
 * @version 1.0
 * @Description
 * @date 2021/11/3
 */
public interface IPetDao {



    /**
     * 根据主人id和分页信息获得宠物
     * @param pageUtil
     * @param petOwnerId
     * @return 宠物对象集合
     */
    List<Pet> getPetByPetOwnerId(PageUtil pageUtil,int petOwnerId);

    /**
     * 根据主人id获取主人宠物的数量
     * @param petOwnerId
     * @return
     */
    int getPetByPetOwnerIdCount(int petOwnerId);

    /**
     *  得到所有宠物对象
     * @return  宠物对象集合
     */
    List<Map<String,Object>> getAllPetHaveShopName(PageUtil pageUtil,Map<String,String> mapInfo);

    /**
     * 获得所有有宠物商店名的宠物的数量
     * @return
     */
    int getAllPetHaveShopNameCount(Map<String,String> mapInfo);

    /**
     * 插入宠物对象，返回是否插入成功
     * @param pet 宠物对象
     * @param conn
     * @param pstm
     * @return 是否插入成功
     */
    boolean insertPet(Pet pet, Connection conn, PreparedStatement pstm)throws SQLException;


    /**
     * 传入宠物对象 更新宠物表
     * @param pet 宠物对象
     * @return 是否更新成功
     */
    boolean updatePet(Pet pet, Connection conn, PreparedStatement pstm) throws SQLException;

    /**
     * 批量更新宠物主人,宠物所属商店
     * @param petIds 宠物id集合
     * @param ownerId 主人id
     * @param storeId 宠物所属商店
     * @return 是否更新成功
     */
    boolean batchUpdate(List<Integer> petIds,int ownerId , int storeId ,Connection conn, PreparedStatement pstm) throws SQLException;

    /**
     * 获得宠物的所有种类
     * @return 宠物种类集合
     */
    List<String> getAllTypeName();

    /**
     * 根据宠物id获得宠物对象
     * @param id 宠物id
     * @return 宠物对象
     */
    Pet getPetById(int id);


}
